%*******************************************************************************
%*
%*   Copyright ©2009 Alexandru Marin
%*
%*   This file is part of nwave/pMRI C library.
%*
%*   This project started as an MSc degree project during a
%*   stage at the Paris-Est university, under joint supervision of prof.
%*   Bogdan Ionescu (Image Analysis and Processing Laboratory, "Politehica"
%*   University of Bucharest), Caroline Chaux and Jean-Christophe Pesquet
%*   (Laboratoire d'Informatique, Université Paris-Est, Institut Gaspard Monge).
%*
%*   nwave/pMRI C libray is free software: you can redistribute it and/or modify
%*   it under the terms of the GNU General Public License as published by
%*   the Free Software Foundation, either version 2 of the License, or
%*   (at your option) any later version.
%*
%*   nwave/pMRI C libray is distributed in the hope that it will be useful,
%*   but WITHOUT ANY WARRANTY; without even the implied warranty of
%*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%*   GNU General Public License for more details.
%*
%*   You should have received a copy of the GNU General Public License
%*   along with nwave/pMRI C library. If not, see <http://www.gnu.org/licenses/>
%*
%*******************************************************************************


%
%
% function mat = mri_read_matrix(filename)
%
% Reads matrix mat from file named filename using csv (comma separated
% values) with the following format:
% - first value is an integer representing the number of
%   dimensions of mat, ndim
% - next ndim values represent the sizes of the matrix along
%   each dimension
% - following values are the actual matrix data
%
%
function mat = mri_read_matrix(filename)

if ~exist('filename', 'var')
   help mri_read_matrix
   error('You muse provide a filename!');
end

mat = csvread(filename);

if(~(size(mat,1) == 1))
    mat = mat.';
end

ndims = mat(1);

% Handle the case of plain vectors
if(ndims==1)
   mat = mat(3:end);
   return
else
    
dims = mat(2:ndims+1);

mat = permute(reshape(mat(ndims+2:end), dims),[2,1,(3:ndims)]);

end